import { ref } from 'vue';
import api from '../api/api';

// 获取文章详情
export const useArticle = (id) => {
  const article = ref(null);
  const loading = ref(true);
  const error = ref('');
  const isContentParsed = ref(false);
  const initialContent = ref(null);

  // 定义 parseContent 函数
  const parseContent = (content) => {
    try {
      // 尝试解析为 JSON
      const parsed = JSON.parse(content);
      
      // 检查是否符合 Delta 格式（包含 ops 数组）
      if (parsed && Array.isArray(parsed.ops)) {
        return parsed;
      } else {
        console.warn('内容不符合 Delta 格式，使用原始内容');
        return null;
      }
    } catch (e) {
      console.error('解析内容失败:', e);
      return null;
    }
  };

  const fetchArticle = async () => {
    try {
      const response = await api.get(`/articles/${id}`);
      if (response.data.code === 1 && response.data.msg === 'success') {
        article.value = response.data.data;
        
        // 尝试解析内容
        initialContent.value = parseContent(article.value.content);
        
        // 如果解析成功，设置 isContentParsed 为 true
        if (initialContent.value) {
          isContentParsed.value = true;
        } else {
          // 解析失败，使用原始内容作为降级方案
          initialContent.value = article.value.content;
          isContentParsed.value = false;
        }

        return response.data;
      } else {
        error.value = '获取文章失败';
      }
    } catch (err) {
      console.error('请求出错:', err);
      error.value = '网络错误，请重试';
    } finally {
      loading.value = false;
    }
  };

  return { article, loading, error, isContentParsed, initialContent, parseContent, fetchArticle };
};